package duk._0803;

import duk._0801.FindNearNumber;

public class FindNearUtils {
	
	private int findNumber = 0;
	private FindNearNumber fnn = null; 
	
	public FindNearUtils() {
		
	}
	public FindNearUtils(FindNearNumber fnn) {
		this.fnn = fnn;
	}
	/**
	 *  가장 가까운 수들 오름차수 정렬
	 * @param findList
	 * @param findNumber
	 * @return 
	 * @return
	 */
	public int extendFindHigestNumber(int[] numList, int findNumber2) {
		int temp = 0;
		
		Integer[] findList = null;
		// 가져오는 클래스에서 가장 가까운수 리스트를 가져 온다.
		findList =fnn.findNearNumber(numList, findNumber);
		temp = findList[0];
		// 가져온 리스트에서 가장 큰수를 구한다.
		for(int i =0; i<findList.length; i++) {
			if(temp <= findList[i]){
				temp = findList[i];
				}
		}
		return temp;
		
	}

	/**
	 *  가장 가까운 수를 찾는다.
	 * @param numList
	 * @param findNumber
	 * @return
	 */
	public int extendFindLowerNumber(int[] numList, int findNumber) {
		int temp = 0;
		
		Integer[] findList = null;
		// 가져오는 클래스에서 가장 가까운수 리스트를 가져 온다.
		findList =fnn.findNearNumber(numList, findNumber);
		temp = findList[0];
		// 가져온 리스트에서 가장 작은수를 구한다.
		for(int i =0; i<findList.length; i++) {
			if(findList[i] >= temp){
				temp = findList[i];
			}
		}
		return temp;
		
	}

	/**
	 *  가장 가까운 수들 오름차수 정렬
	 * @param findList
	 * @param findNumber
	 * @return 
	 * @return
	 */
	public Integer[] extendFindAscNumber(int[] findList, int findNumber) {
		int temp = 0;
		
		Integer[] numList = null;
		// 가져오는 클래스에서 가장 가까운수 리스트를 가져 온다.
		numList =fnn.findNearNumber(findList, findNumber);

		for(int i =0; i<numList.length; i++) {
			for(int j= i+1; i<numList.length; i++) {
				if(numList[i]<numList[j]){
					temp =numList[j];
					numList[j] = numList[i];
					numList[i] = temp;
				}
			}

		}
		return numList;
		
	}
	/**
	 *  가장 가까운 수들 내림차수 정렬
	 * @param numList
	 * @param findNumber
	 * @return
	 */
	public Integer[] extendFindDescNumber(int[] findList, int findNumber) {
		int temp = 0;
		Integer[] numList = null;
		// 가져오는 클래스에서 가장 가까운수 리스트를 가져 온다.
		numList =fnn.findNearNumber(findList, findNumber);
		for(int i =0; i<numList.length; i++) {
			for(int j = i+1;j<numList.length; j++) {
				if(numList[i]>numList[j]) {
					temp =numList[j];
					numList[j] = numList[i];
					numList[i] = temp;
				}
			}
		}
		return numList;
	}
	
	/**
	 *  출력 하는 메소드
	 * @param printList
	 */
	public void print(Integer[] printList) {
		for(int i = 0; i<printList.length; i++) {
			System.out.print(printList[i]+"\t");
		}
		System.out.println();
	}

	/**
	 *  짝수인지 판단하고 출력한다.
	 * @param numList
	 */
	public void evenNumer(int[] numList, int findNumber) {
		// 가져오는 클래스에서 가장 가까운수 리스트를 가져 온다.
		Integer[] findList = null;
		findList =fnn.findNearNumber(numList, findNumber);
		
		for(int i = 0; i<findList.length; i++) {
			if((findList[i]%2)==0 ) {
				System.out.print(findList[i]+" :  짝수입니다." +"\t");
			}
		}
	}
	/**
	 *  홀수인지 판단하고 출력한다.
	 * @param numList
	 */
	public void oddNumer(int[] numList, int findNumber) {
		// 가져오는 클래스에서 가장 가까운수 리스트를 가져 온다.
		Integer[] findList = null;
		findList =fnn.findNearNumber(numList, findNumber);
		
		for(int i = 0; i<findList.length; i++) {
			if((findList[i]%2)!=0 ) {
				System.out.println(findList[i]+" :  홀수 입니다.");
			}
		}		
	}
	public static void main(String[] args) {
		int[] numList ={32,34,36,38,40,42,44,45};
		int findNumber = 33;
		Integer[] printList = null;
		FindNearNumber fnn = new FindNearNumber();
		FindNearUtils fnus = new FindNearUtils(fnn);
		
		System.out.println(fnus.extendFindLowerNumber(numList,findNumber) );     // 가장 낮은수
		System.out.println( fnus.extendFindHigestNumber(numList,findNumber) );   // 가장 높은수 
		printList = fnus.extendFindAscNumber(numList, findNumber);				 // 오름차순
		fnus.print(printList);
		printList = fnus.extendFindDescNumber(numList, findNumber);				 // 내림 차순
		fnus.print(printList);
		fnus.oddNumer(numList,findNumber);   												 // 홀수 판단
		fnus.evenNumer(numList,findNumber);												 // 짝수 판단			
		
	}

}
